In modern data processing and control systems, the data processing operations are carried out by one or more data processors, each consisting of a central processing unit and memory. The central processing unit, under the control of a program, stored in memory, processes data, also stored in memory. Data is entered into and taken out of memory via input/output units such as the reservation terminals of an airline reservation system.
Data processing and control systems frequently carry out many tasks or program processes concurrently. Each of these tasks is accomplished by carrying out one or more individual transactions. Queues are commonly used to schedule the carrying out or execution of such transactions. The program processes which generate the requests for executing transactions load transaction request entries into a first-in first-out (FIFO) queue in the memory of the system. The system then executes the transactions by processing the transaction request entries in the order in which the entries were loaded in the FIFO queue.
In some applications, portions of a transaction cannot be executed readily as one long action. For example, different bulk storage units may be associated with an initial processing action and a final processing action of a single transaction. The second bulk storage unit is unlikely to be available immediately after the first storage unit has completed an action. Accordingly, the processor would have to wait for the second bulk storage unit to become available if the initial and final processing actions were included in the same processing action. Such waiting by the processor wastes system resources since the processor is unavailable to process other actions while waiting. Prior systems have included two queues in order to utilize the processor more fully. A first queue stores transaction request entries for performance of initial processing actions and a second queue stores transaction request entries for performance of final processing actions. When the initial processing action is completed, the transaction request entry is moved from the first queue to the second queue. In terms of the prior example relating to first and second bulk storage units, the first queue is served only when the first bulk storage unit is available, and the second queue is served only when the second bulk storage unit is available.
The use of two or more queues in sequence requires additional data processing operations to be performed to move transaction request entries from one queue to another. Performing such unproductive overhead operations reduces the total data processing capacity of a system. Further, each sequential queue must be made large enough to respond to peak demands for that queue; this requires that substantial expensive memory resources must be dedicated to the queues.
In view of the foregoing, a recognized problem in the art is that no efficient method exists for scheduling the ordered performance of a sequence of actions for each of a number of transaction requests where the sequence of actions cannot be efficiently executed as one longer action.